﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Negocio.catalogos;
using Negocio.clases_tontas;

namespace Presentacion.controlasistencia
{
    public partial class logout : System.Web.UI.Page
    {
        catalogoTiempo _objCaTiempo = new catalogoTiempo();
        catalogoCarrera _objCaCarrera = new catalogoCarrera();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["idDocente"] != null)
            {
                if (Request.Cookies["datosgalleta"].Value != null)
                {
                    int segundos = 0, minutos = 0, horas = 0;
                    try
                    {
                        DateTime ultimoAcceso = DateTime.Now;
                        var carreras = _objCaCarrera.obtenerCarrera(Convert.ToInt32(Session["idDocente"]));
                        foreach (var item in carreras)
                        {
                            var tiempoSesion = _objCaTiempo.obtenerTiempoXidDocente(Convert.ToInt32(Session["idDocente"]), item.idCarrera);
                            int dhora = 0, ddminutos = 0, dddsegundos = 0;
                            if (tiempoSesion.Count() > 0)
                            {
                                foreach (var item2 in tiempoSesion)
                                {
                                    dhora = item2.hora;
                                    ddminutos = item2.minutos;
                                    dddsegundos = item2.segundos;
                                }
                            }
                            DateTime inicioSession = Convert.ToDateTime(Request.Cookies["datosgalleta"].Value.ToString());
                            string finSession =DateTime.Now.ToString("HH:mm:ss");
                            
                            DateTime horaActual = DateTime.Now;
                            TimeSpan resta = horaActual.Subtract(inicioSession);
                            string hora = resta.ToString();
                            string[] split = hora.Split(new Char[] { ':' });
                            string[] split2 = split[2].Split(new Char[] { '.' });
                            if (carreras.Count() == 3 || carreras.Count()==2)
                            {
                                segundos = Convert.ToInt32(split2[0]) ;
                                minutos = Convert.ToInt32(split[1]) ;
                                horas = Convert.ToInt32(split[0]);
                            }    
                                else  if (carreras.Count() > 0)
                                    {
                                        segundos = Convert.ToInt32(split2[0]) + dddsegundos;
                                        minutos = Convert.ToInt32(split[1]) + ddminutos;
                                        horas = Convert.ToInt32(split[0]) + dhora;
                                    }

                            while (segundos > 59)
                            {
                                segundos = segundos - 60;
                                minutos = minutos + 1;
                                while (minutos > 59)
                                {
                                    minutos = minutos - 60;
                                    horas = horas + 1;
                                }
                            }
                            if (tiempoSesion.Count() > 0)
                            {
                                if (carreras.Count() == 2)
                                {
                                    segundos = (segundos / 2) + dddsegundos;//
                                    minutos = (minutos / 2) + ddminutos;//
                                    horas = (horas / 2) + dhora;// 
                                    while (segundos > 59)
                                    {
                                        segundos = segundos - 60;
                                        minutos = minutos + 1;
                                        while (minutos > 59)
                                        {
                                            minutos = minutos - 60;
                                            horas = horas + 1;
                                        }
                                    }
                                    _objCaTiempo.modificarTiempo(new tiempo(horas, Convert.ToInt32(Session["idDocente"].ToString()), Convert.ToInt32(Session["periodo"]), minutos, segundos, item.idCarrera, ultimoAcceso.ToString(),TimeSpan.Parse(inicioSession.ToString("HH:mm:ss")),TimeSpan.Parse(finSession)));
                                }
                                else if (carreras.Count() == 3)
                                {
                                    segundos = (segundos / 3)+ dddsegundos;//
                                    minutos = (minutos / 3)+ ddminutos;// 
                                    horas = (horas / 3)+ dhora; //
                                    while (segundos > 59)
                                    {
                                        segundos = segundos - 60;
                                        minutos = minutos + 1;
                                        while (minutos > 59)
                                        {
                                            minutos = minutos - 60;
                                            horas = horas + 1;
                                        }
                                    }
                                    _objCaTiempo.modificarTiempo(new tiempo(horas, Convert.ToInt32(Session["idDocente"]), Convert.ToInt32(Session["periodo"]), minutos, segundos, item.idCarrera, ultimoAcceso.ToString(),TimeSpan.Parse(inicioSession.ToString("HH:mm:ss")), TimeSpan.Parse(finSession)));
                                }
                                else
                                {
                                    _objCaTiempo.modificarTiempo(new tiempo(horas, Convert.ToInt32(Session["idDocente"].ToString()), Convert.ToInt32(Session["periodo"]), minutos, segundos, item.idCarrera, ultimoAcceso.ToString(), TimeSpan.Parse(inicioSession.ToString("HH:mm:ss")), TimeSpan.Parse(finSession)));
                                }
                            }
                            else
                            {
                                if (carreras.Count() == 2)
                                {
                                    _objCaTiempo.insertarTiempo(new tiempo(horas / 2, Convert.ToInt32(Session["idDocente"]), Convert.ToInt32(Session["periodo"]), minutos / 2, segundos / 2, item.idCarrera, ultimoAcceso.ToString(), TimeSpan.Parse(inicioSession.ToString("HH:mm:ss")), TimeSpan.Parse(finSession)));
                                }
                                else if (carreras.Count() == 3)
                                {
                                    _objCaTiempo.insertarTiempo(new tiempo(horas / 3, Convert.ToInt32(Session["idDocente"]), Convert.ToInt32(Session["periodo"]), minutos / 3, segundos / 3, item.idCarrera, ultimoAcceso.ToString(), TimeSpan.Parse(inicioSession.ToString("HH:mm:ss")), TimeSpan.Parse(finSession)));
                                }
                                else
                                {
                                    _objCaTiempo.insertarTiempo(new tiempo(horas, Convert.ToInt32(Session["idDocente"]), Convert.ToInt32(Session["periodo"]), minutos, segundos, item.idCarrera, ultimoAcceso.ToString(), TimeSpan.Parse(inicioSession.ToString("HH:mm:ss")), TimeSpan.Parse(finSession)));
                                }
                            }
                        }
                    }
                    catch (Exception EX)
                    {
                        throw;
                    }
                }
                Session.Clear();
                Server.Transfer("Default.aspx");
            }
            else
            {
                Server.Transfer("Default.aspx");
            }
        }
    }
}